Ce sont des valeurs primitives que nous définissons
let age = 25;
typeof age; //number
let nom = "toto";
typeof nom; //string
let bool = true;
typeof bool; //boolean
let obj = {};
typeof obj; //object
Mais on peut appeler des méthodes comme s'il s'agissait d'objets
let age = 25;
age.toFixed(2); //"25.00"
let nom = "toto";
nom.toUpperCase(); //"TOTO"
Javascript effectue automatiquement les conversions
Les constructeurs String, Boolean, Number
existent, mais on ne les utilise pas pour créer des chaînes, booléens et des nombres. C'est inutile et source d'erreurs.
//sans les conversions automatiques, il faudrait écrire
let age = 25;
let objTmp = new Number(age);
let str = objTmp.toFixed(2);
objTmp = null;
//en pratique on écrit
let age = 25;
let str = age.toFixed(2);
En revanche l'invocation des constructeurs String, Boolean, Number
sans le mot clef new
est utile pour convertir l'argument en valeur primitive correspondante.
Number("25.5"); //25.5
Number("25.5Ko"); //NaN
Number(true); //1
Number(false); //0
String(25.5); //"25.5"
String(true); //"true"
String(false); //"false"
Boolean("toto"); //true
Boolean(""); //false
Boolean(25); //true
Boolean(0); //false
at
: renvoie le caractère à la position spécifiéeincludes
: teste si une chaîne est contenue dans une autreindexOf
: renvoie l'indice de la 1ère occurencelastIndexOf
: renvoie l'indice de la dernière occurencereplace
: renvoie la chaîne modifiée à l'aide d'une expression rationnelle et un texte de remplacementsearch
: recherche grâce à une expression rationnelleslice
: extrait une section de la chaine de caractèressplit
: divise la chaîne en tableau de sous-chaînestoLowerCase
: renvoie la chaîne en minusculestoUpperCase
: renvoie la chaîne en majusculestrim
: renvoie la chaîne en retirant les blancs en début et fintoFixed
: renvoie une chaîne de caractères avec un nombre spécifié de chiffres après la virguletoPrecision
: renvoie une chaîne de caractères avec un nombre spécifié de chiffres significatifslet num = 2.4567887899;
num.toFixed(2); // "2.46"
num.toPrecision(2); // "2.5"
num = 0.05;
num.toFixed(3); // "0.050"
num.toPrecision(3); // "0.0500"
Toutes ces méthodes ne modifient pas la variable elle-même mais renvoient une nouvelle valeur primitive.
let nom = "Toto";
nom.toUpperCase();
console.log(nom); //Toto
let nomModifie = nom.toUpperCase();
console.log( nomModifie ); //TOTO
decodeURI
: décode une URLdecodeURIComponent
: décode un paramètre d'URLencodeURI
: encode une URLencodeURIComponent
: encode un paramètre d'URLencodeURI("http://monDomaine.fr/mon article/?param=toto");
//"http://monDomaine.fr/mon%20article/?param=toto"
encodeURIComponent("toto&tata?titi");
//"toto%26tata%3Ftiti"
parseInt
: convertit une variable en nombre entier
parseFloat
: convertit une variable en nombre décimal
isFinite
: détermine si l'argument est un nombre fini
isNaN
: détermine si l'argument est NaN
(not a number)
Number.parseInt("25.5°C"); //25 les décimaux sont tronqués
Number.parseFloat("25.5°C"); //25.5
Number("25.5°C"); //NaN
Number.isFinite(2/3); //true
Number.isFinite(Infinity); //false
Number.isFinite(NaN); //false
Number.isNaN(3/0); //false
Number.isNaN( parseInt("a") ); //true
Pour des raisons historiques, ces fonctions sont aussi disponibles dans l'espace global.
parseInt("25.5°C"); //25 les décimaux sont tronqués
parseFloat("25.5°C"); //25.5
isFinite(2/3);
isNaN( Number.parseInt("a") ); //true
let nom = "Toto";
`Mon nom est ${nom}`; // Mon nom est Toto
let age = 32;
`Mon âge sera ${ age+1 } ans` //Mon âge sera 33 ans
function ajoutUnites(chaines, t, rr) {
let str0 = chaines[0]; //"Il fait "
let str1 = chaines[1]; //" et il a plu "
return `${ chaines[0] }${t}°C${ chaines[1] }${rr}mm`
}
let t = 30;
let rr = 0.8;
ajoutUnites`Il fait ${t} et il a plu ${rr}`;
/*Il fait 30°C et il a plu 0.8mm*/